package com.yixin.utils;

import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;

import java.util.Date;
import java.util.Map;

/**
 * JWT工具类，用于生成和解析JWT令牌
 */
public class JWTUtils {
    // 默认过期时间12小时
    private static final long DEFAULT_EXPIRATION = 1000 * 60 * 60 * 12;

    // 默认签名密钥
    private static final String DEFAULT_SECRET = "yixin";

    /**
     * 生成JWT令牌（使用默认密钥和过期时间）
     *
     * @param claims 要包含在令牌中的数据
     * @return 生成的JWT令牌字符串
     */
    public static String generateJWT(Map<String, Object> claims) {
        return Jwts.builder()
                .signWith(SignatureAlgorithm.HS256, DEFAULT_SECRET)
                .addClaims(claims)
                .setExpiration(new Date(System.currentTimeMillis() + DEFAULT_EXPIRATION))
                .compact();
    }

    /**
     * 解析JWT令牌（使用默认密钥）
     *
     * @param jwt 要解析的JWT令牌字符串
     * @return 令牌中的数据
     */
    public static Claims parseJWT(String jwt) {
        return Jwts.parser()
                .setSigningKey(DEFAULT_SECRET)
                .parseClaimsJws(jwt)
                .getBody();
    }
}
